Add CI/CD pipeline that builds and deploys the app to the VM #12
+300
−17
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
What this does
ci.yaml): install → prettier check → ESLint → typecheck. The committed template rannpm ci/npm run test, which don't exist in this pnpm monorepo, so CI could never pass — and the deploy workflow is chained on its success. The Prisma client is generated in CI from a dummy env file (packages/db/src/generatedis gitignored).deploy-to-vm.yaml), runs automatically when CI succeeds onmain:VITE_GRAPHQL_URLbaked in/srv/gspotteron the VM, installs dependencies, and applies the Prisma schema (db:push)gspotter-backend(GraphQL on port 3001) andgspotter-frontend(SSR on port 3000)/project2.output,dist,.nitro,.vinxi,.wrangler) sopnpm lintpasses after a buildOne-time VM setup (details in the deploy workflow header)
sudo npm i -g pnpm@10, installed system-wide so systemd can find themALL=(root) NOPASSWD: /usr/bin/install, /usr/bin/tee, /usr/bin/systemctlpnpm db:setup(see README)ProxyPass /project2 http://localhost:3000/project2(plus reverse), so the frontend is served at[baseurl]/project2— it is an SSR Node server, not static files